package com.lebron.kotlin.map

import android.content.Context
import com.amap.api.location.AMapLocationClient
import com.amap.api.location.AMapLocationClientOption

/**
 * @Author lebron
 * @Date 18-7-25-下午1:44
 * 获取定位信息
 */
class  LocationManager {

    private var locationClient: AMapLocationClient? = null

     fun initLocation(context: Context)
            : AMapLocationClient? {
        //初始化定位
        locationClient = AMapLocationClient(context.applicationContext)

        //初始化AMapLocationClientOption对象
        val option: AMapLocationClientOption? = AMapLocationClientOption()
        //设置定位场景，目前支持三种场景（签到、出行、运动，默认无场景）
        option?.locationPurpose = AMapLocationClientOption.AMapLocationPurpose.SignIn
        //设置定位模式（高精度：Hight_Accuracy ，低功耗：Battery_Saving ，仅用设备：Device_Sensors）
        option?.locationMode = AMapLocationClientOption.AMapLocationMode.Hight_Accuracy
        //设置单次定位
        option?.isOnceLocation = true
        //获取最近3s内精度最高的一次定位结果：
        //设置setOnceLocationLatest(boolean b)接口为true，启动定位时SDK会返回最近3s内精度最高的一次定位结果。如果设置其为true，setOnceLocation(boolean b)接口也会被设置为true，反之不会，默认为false。
        option?.isOnceLocationLatest = true
        //自定义连续定位
        //设置定位间隔,单位毫秒,默认为2000ms，最低1000ms。
//        option?.interval = 1000
        //关闭缓存机制
        option?.isLocationCacheEnable = false
        //设置是否允许模拟位置,默认为true，允许模拟位置
        option?.isMockEnable = true
        //单位是毫秒，默认30000毫秒，建议超时时间不要低于8000毫秒。
        option?.httpTimeOut = 20000
        //设置是否返回地址信息（默认返回地址信息）
        option?.isNeedAddress = true
        locationClient?.setLocationOption(option)
        return locationClient
    }

    /**
     * 开启定位
     */
    fun startLocation() {
        locationClient?.startLocation()
    }

    /**
     * 停止定位
     */
    fun stopLocation() {
        locationClient?.stopLocation()
    }

    /**
     * 销毁定位
     */
    fun destroy(){
        locationClient?.onDestroy()
    }
}